package com.sunbim.rsrv.service;

import com.sunbim.rsrv.params.user.UserChangePasswordParams;
import com.sunbim.rsrv.params.user.UserLoginParams;
import com.sunbim.rsrv.params.user.UserUpdateParams;
import com.sunbim.rsrv.pojo.User;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author yuhui
 * @since 2021-12-30
 */
public interface UserService extends IService<User> {

    /**
     * 用户登录
     *
     * @param params params.UserLoginParams
     * @return 登录的用户信息
     */
    Map<String, Object> login(UserLoginParams params);


    /**
     * 用户注册
     * @param user 用户数据
     * @param file 项目封面图
     */
    void register(User user, MultipartFile file);

    /**
     * 用户更新
     * @param user 用户数据u
     * @param file 项目封面图
     */
    void updateUser(User user, MultipartFile file);

    /**
     * 用户退出
     */
    void logout();

    /**
     * 更新用户数据
     *
     * @return 更新后的用户信息
     */
    void updateUser(User user);

    /**
     * 更改密码,更新后退出登录状态
     *
     * @param params params.UserChangePasswordParams
     */
    void changePassword(UserChangePasswordParams params);

    /**
     * 查询除管理员外的全部用户信息
     *
     * @return 用户信息列表
     */
    List<Map<String, Object>> getAllExcludeAdmin();

    /**
     * 根据用户id删除该数据
     *
     * @param id 用户id
     */
    void deleteUser(int id);

    Map<String, Object> getUserById(Object loginId);

    List<Map<String, Object>> searchByProjectName(String keyword);


}
